3.4. Life-cycle of Root Resource Classes 根资源类生命周期

默认情况下,根资源类的生命周期是每个请求,即一根资源类的新实例在每次请求的URI路径匹配根资源时创建。利用构造函数和域可以构造一个很自然的编程模型,如前一节中显示的 SparklinesResource 类的构造函数)而无需关心对同一资源的多个并发请求。

总的来说这不太可能的成为性能问题的原因。近年来,类的构造以及 JVM 的 GC 已大大改善,在服务和处理 HTTP 请求并返回 HTTP 响应中,许多对象将被创建和丢弃的。

单例的根资源类的实例可以通过一个应用实例声明。

使用 Jersey 特定注释让 Jersey 支持两个进一步的生命周期。

Table 3.1. 资源域


























注解类全称描述
Request scope@RequestScoped (or none)org.glassfish.jersey.process.internal.RequestScoped默认的生命周期(应用时没有注释的存在)。在这个范围的资源实例被创建为每个新的请求和用于该请求的处理。如果资源是在请求处理使用一次以上,总是相同的实例将被使用。这可能发生在匹配中一个资源子资源返回多次。在这种情况下,只有在实例将服务于请求。
Per-lookup scope@PerLookuporg.glassfish.hk2.api.PerLookup在这个范围的资源实例被创建的每一个时间是所需的处理甚至处理相同的请求。
Singleton@Singletonjavax.inject.Singleton在这一范围内,每个 jax-rs 应用只有一个实例。单资源可以注明 @Singleton 它的类可以使用的应用实例注册。你也可以通过注册单实例应用来创建单例。